/*
 * @lc app=leetcode.cn id=701 lang=cpp
 *
 * [701] 二叉搜索树中的插入操作
 */

// @lc code=start
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution
{
public:
    TreeNode *insertIntoBST(TreeNode *root, int val)
    {
        //这里没有说是平衡二叉树 所以也不需要改变结构 直接到末尾找个空节点就行
        //新值和原始二叉搜索树中的任意节点值都不同 且没有重复值
        //终止条件
        if (root == NULL)
        {
            //如果当前为空 说明已经找到了所需的位置
            TreeNode *node = new TreeNode(val);
            return node;
        }
        //搜索数 直接搜索左右
        if (val < root->val)
        {
            root->left = insertIntoBST(root->left, val);
        }
        if (val > root->val)
        {
            root->right = insertIntoBST(root->right, val);
        }
        return root;
    }
};
// @lc code=end

